package com.hdfs.api;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

//下载
public class HDFSGetFileDemo {
    public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
        //1.设置配置类
        Configuration conf = new Configuration();
        //2.设置hdfs的URI
        URI uri = new URI("hdfs://10.90.100.101:9820");
        //3.获取文件系统 ： 参数1 hdfs的uri  参数2 配置类对象  参数3 hadoop集群的用户（根据自己实际用填写）
        FileSystem fs = FileSystem.get(uri, conf, "hadoop");
        //4.配置路径
        //设置下载到本地的路径
        Path dst = new Path("D:/");
        //设置要下载hdfs文件的路径
        Path src = new Path("/hadoop-3.3.4.tar.gz");
        //5.获取要下载文件的输入流
        FSDataInputStream in = fs.open(src);
        //6.创建输出到本地的输出流并设置下载到本地的文件名称
        FileOutputStream out = new FileOutputStream("D:/hadoop-3.3.4.tar.gz");
       //7.使用IOUtils工具类操作写入文件到本地
        IOUtils.copyBytes(in,out,4096,true);
        //8.关流
        out.close();
        in.close();




    }
}
